package com.lpwa.web.controller.system;

import com.lpwa.common.annotation.Log;
import com.lpwa.common.config.Global;
import com.lpwa.common.core.controller.BaseController;
import com.lpwa.common.core.domain.AjaxResult;
import com.lpwa.common.core.page.TableDataInfo;
import com.lpwa.common.enums.BusinessType;
import com.lpwa.common.utils.file.FileUploadUtils;
import com.lpwa.common.utils.poi.ExcelUtil;
import com.lpwa.system.domain.SysEsmap;
import com.lpwa.system.service.ISysEsmapService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.tomcat.jni.FileInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 地图管理Controller
 * 
 * @author ruoyi
 * @date 2020-11-19
 */
@Controller
@RequestMapping("/system/esmap")
public class SysEsmapController extends BaseController
{
    private String prefix = "system/esmap";

    @Autowired
    private ISysEsmapService sysEsmapService;

    @RequiresPermissions("system:esmap:view")
    @GetMapping()
    public String esmap()
    {
        return prefix + "/esmap";
    }

    /**
     * 查询地图管理列表
     */
    @RequiresPermissions("system:esmap:list")
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(SysEsmap sysEsmap)
    {
        startPage();
        List<SysEsmap> list = sysEsmapService.selectSysEsmapList(sysEsmap);
        return getDataTable(list);
    }

    /**
     * 导出地图管理列表
     */
    @RequiresPermissions("system:esmap:export")
    @Log(title = "地图管理", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    @ResponseBody
    public AjaxResult export(SysEsmap sysEsmap)
    {
        List<SysEsmap> list = sysEsmapService.selectSysEsmapList(sysEsmap);
        ExcelUtil<SysEsmap> util = new ExcelUtil<SysEsmap>(SysEsmap.class);
        return util.exportExcel(list, "esmap");
    }

    /**
     * 新增地图管理
     */
    @GetMapping("/add")
    public String add()
    {
        return prefix + "/add";
    }

//    /**
//     * 新增保存地图管理
//     */
//    @RequiresPermissions("system:esmap:add")
//    @Log(title = "地图管理", businessType = BusinessType.INSERT)
//    @PostMapping("/add")
//    @ResponseBody
//    public AjaxResult addSave(SysEsmap sysEsmap)
//    {
//        return toAjax(sysEsmapService.insertSysEsmap(sysEsmap));
//    }
    @PostMapping("/add")
    @ResponseBody
    public AjaxResult addSave(@RequestParam("file") MultipartFile[] file, FileInfo fileInfo) throws IOException
    {
//        // 上传文件路径
//        String filePath = RuoYiConfig.getUploadPath();
//        // 上传并返回新文件名称
//        String fileName = FileUploadUtils.upload(filePath, file);
//        fileInfo.setFilePath(fileName);
        FileUploadUtils.saveMultiFile(file);
        return AjaxResult.success();
//        return toAjax(fileInfoService.insertFileInfo(fileInfo));
    }
    /**
     * 修改地图管理
     */
    @GetMapping("/edit/{id}")
    public String edit(@PathVariable("id") Long id, ModelMap mmap)
    {
        SysEsmap sysEsmap = sysEsmapService.selectSysEsmapById(id);
        mmap.put("sysEsmap", sysEsmap);
        return prefix + "/edit";
    }

//    /**
//     * 修改保存地图管理
//     */
//    @RequiresPermissions("system:esmap:edit")
//    @Log(title = "地图管理", businessType = BusinessType.UPDATE)
//    @PostMapping("/edit")
//    @ResponseBody
//    public AjaxResult editSave(MultipartFile[] folder,SysEsmap sysEsmap)
//    {
////        MultipartFile[] folder = sysEsmap.getFolder();
//        if (folder != null && folder.length != 0) {
//            FileUploadUtils.saveMultiFile(folder);
//            String filePath = folder[0].getOriginalFilename();
//            //获取文件夹名称
//            String folderName = filePath.substring(0, filePath.indexOf('/'));
//            //将文件夹名称作为地图ID，
//            sysEsmap.setMapId(folderName);
//            if (StringUtils.isEmpty(""+sysEsmap.getThemeId())){
//                sysEsmap.setThemeId(2001);//默认2001
//            }
//            //上传路径Global.getProfile()
//            sysEsmap.setMapDataUrl(Global.getProfile());
//        }
//        return toAjax(sysEsmapService.updateSysEsmap(sysEsmap));
//    }

    /**
     * 修改保存地图管理
     */
    @RequiresPermissions("system:esmap:edit")
    @Log(title = "地图管理", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @ResponseBody
    public AjaxResult editSave(SysEsmap sysEsmap)
    {
        return toAjax(sysEsmapService.updateSysEsmap(sysEsmap));
    }
    /**
     * 删除地图管理
     */
    @RequiresPermissions("system:esmap:remove")
    @Log(title = "地图管理", businessType = BusinessType.DELETE)
    @PostMapping( "/remove")
    @ResponseBody
    public AjaxResult remove(String ids)
    {
        return toAjax(sysEsmapService.deleteSysEsmapByIds(ids));
    }

    @Log(title = "地图管理", businessType = BusinessType.IMPORT)
    @RequiresPermissions("system:esmap:add")
    @PostMapping("/importData")
    @ResponseBody
    public AjaxResult importData(MultipartFile[] file, boolean updateSupport) throws Exception
    {

        if (file == null || file.length == 0) {
            return AjaxResult.error("文件为空");
        }

         String filePath = file[0].getOriginalFilename();
         //获取文件夹名称
         String folderName = filePath.substring(0, filePath.indexOf('/'));
         //将文件夹名称作为地图ID，
         SysEsmap sysEsmap = new SysEsmap();
         sysEsmap.setMapId(folderName);
         sysEsmap.setThemeId(2001);//默认2001
         //上传路径Global.getProfile()
         sysEsmap.setMapDataUrl(Global.getProfile());
//         sysEsmap.setMapThemeUrl();
         //新增之前先删掉表中数据
         sysEsmapService.deleteSysEsmap();
         //新增地图数据
         sysEsmapService.insertSysEsmap(sysEsmap);
         FileUploadUtils.saveMultiFile(file);
         return AjaxResult.success();
    }
}
